java JUnit测试以接口为参数的方法
正如标题所述,我想测试以下方法:
Class A:
private List<String> s;
public A() {
s = new ArrayList<String>();
s.add("Gregor");
s.add("Example");
s.add("Example2");
}
public String argr(B b) { //B-> Interface
int t = b.t();
String r = "Hello ";
for(String z:s ) {
boolean x = b.f(t, 5);
if(x) {
r += z;
}
}
return r;
}
使用接口B:
public interface B {
int t();
boolean f(int t, int i);
}
测试:
class Example{
public B b;
private A example = new A();
@Test
void test() {
//assert(example .s() == "Hello GregorExampleExample2");
System.out.println(example .s(b));
//bsp.A(c);
}
}
问题:方法b需要一个Interface
作为参数,接口可以通过这个方法实现:Class A implements B{}
问题:测试时,它无法识别类A中接口实现的方法
问题1:如何使用接口作为参数测试jUnit方法
问题2:您需要在jUnit测试类中实现接口方法吗
# 1 楼答案
您可以为每个测试用例创建这样的匿名类:
只需将返回值替换为适合您的测试用例的值,但尽量避免在类中放入任何逻辑(因为那样您也必须对其进行测试)
如果您不想为每个测试用例实现接口,另一种可能性是使用Mockito来模拟您的接口: